/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.tesoreria.bc;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.cip.esymons.tesoreria.be.Chequera;
import org.cip.esymons.tesoreria.be.CuentaBancaria;
import org.cip.esymons.tesoreria.be.EnumEstadoChequera;

/**
 *
 * @author Gilmar
 */
@Stateless
public class ChequeraFacade implements ChequeraFacadeLocal {

    @PersistenceContext
    private EntityManager em;

    public void create(Chequera chequera) {
        em.persist(chequera);
    }

    public void edit(Chequera chequera) {
        em.merge(chequera);
    }

    public void remove(Chequera chequera) {
        em.remove(em.merge(chequera));
    }

    public Chequera find(Object id) {
        try {
            return em.find(Chequera.class, id);
        } catch (Exception e) {
            return null;
        }
    }

    public List<Chequera> findAll() {
        try {
            return em.createQuery("select object(o) from Chequera as o").getResultList();
        } catch (Exception e) {
            return new ArrayList();
        }
    }

    public void actualizarNumeracionActual(CuentaBancaria cuentaBancaria) {
        try {
            Chequera chequera = (Chequera) em.createQuery("select object(o) from Chequera as o Where o.estado=?1 and o.cbaNumcuenta=?2").setParameter(1, EnumEstadoChequera.VIGENTE).setParameter(2, cuentaBancaria).getSingleResult();
            chequera.setCheNumactual(chequera.getCheNumactual() + 1);
            em.merge(chequera);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }

    public Object[] obtenerNumeracionActual(CuentaBancaria cuentaBancaria) {
        try {
            Chequera chequera = (Chequera) em.createQuery("select object(o) from Chequera as o Where o.estado=?1 and o.cbaNumcuenta=?2").setParameter(1, EnumEstadoChequera.VIGENTE).setParameter(2, cuentaBancaria).getSingleResult();
            StringBuilder ser = new StringBuilder(String.valueOf(chequera.getCheNumactual()));
            ser = ser.reverse();
            int tamano = ser.length();
            for (int i = 0; i < 3 - tamano; i++) {
                ser.append("0");
            }
            Object o[] = new Object[2];
            o[0] = ser.reverse().toString();
            o[1] = chequera;
            return o;
        } catch (Exception ex) {
            Object o[] = new Object[2];
            o[0] = "000";
            o[1] = null;
            return o;
        }
    }
}
